"ui";

var color = "#BBDEFB";
var toolcolor = "#FFCCBC";


LoginUI();

//显示登录界面
function LoginUI() {
    ui.layout(
        <scroll>
            <frame>
                <vertical h="auto" align="center" margin="0 50">
                    <text text="乐抢" textSize="48sp" gravity="center" textColor="black"/>
                    <linear>
                        <text w="56" gravity="center"  color="#111111"  size="16">激活码</text>
                        <input id="name" hint="请输入管理员给你的激活码" w="*" h="60"/>
                    </linear>
                    
                    <linear gravity="center">
                        <button id="login" text="登录"/>
                        <button id="how" text="去获取激活码" />
                    </linear>
                    <linear gravity="center">
                        <input id="put"  w="auto"/>
                    </linear>
                </vertical>
            </frame>
        </scroll>
    );


    var psd = ui.name.getText();
    files.create("/sdcard/你的乐抢密码.txt");
    var data = files.read("/sdcard/你的乐抢密码.txt");
    try {
        ui.put.setText(data)
    } catch (e) {}

    ui.how.on("click", () => 激活()) //ui页面跳转
    ui.login.on("click", () => {
        if (ui.put.text() == 激活码) {
            toast("登录成功");
            主页();
        } else if (ui.name.text() == 激活码) /*设置密码*/ {
            files.write("/sdcard/你的乐抢密码.txt", psd)
            toast("登录成功");
            主页(); //显示主页页面
        } else {
            toast("密码错误")
        }
    });
}

/***************** 激活码******************/
var IMEI = device.getIMEI(); //获得手机IMEI
var 计算 = parseInt(IMEI * 1024 / 03222146); // 取整
var 激活码 = 计算.toString(32).substring(2, 8) //转换成32类型，并截取第4位到第12位
/*****************激活码 *****************/


function 激活() {

    ui.layout(
        <frame>
            <vertical h="auto" align="center" margin="0 50">
                <text text="先找你的IMEI码，再将你的IMEI码发给管理员。"/>
                <button id="imei" text="点击获取本机IMEI"/>
                <button id="tell" text="联系管理员" />
                <button id="back" text ="返回"/>
            </vertical>
        </frame>
    );
    ui.back.on("click", () => LoginUI())
    ui.imei.on("click", () => {
        try {
            var IMEI = device.getIMEI();
            setClip(IMEI)
            toast(IMEI + "已复制至剪贴板");
        } catch (e) {
            toast("获取IMEI失败，可能你没有给软件读取你设备信息。")
        }
    });

    ui.tell.on("click", () => {
        qq = "206676727"
        app.startActivity({
            action: "android.intent.action.VIEW",
            data: "mqqapi://card/show_pslcard?&uin=" + qq
        });

    })


}

function 主页() {

    ui.layout(
        <drawer id="drawer">
            <vertical>
                <appbar>
                    <toolbar id="toolbar" title="乐抢"/>
                    <Switch id="autoService" text="无障碍服务" checked="{{auto.service != null}}" padding="8 0 8 8" textSize="15sp"/>
                    <tabs id="tabs"/>
                </appbar>
                <viewpager id="viewpager">
                    <scroll>
                        <frame>
                            <vertical padding="16">
                                <linear>
                                    <text text="*学院" textColor="black" textSize="16sp" />
                                    <input id="xy" hint="请输入您的学院" singleLine="true" w="*"/>
                                </linear>
                                <linear>
                                    <text text="*班级" textColor="black" textSize="16sp" />
                                    <input id="bj" hint="请输入您的班级" singleLine="true" w="*"/>
                                </linear>
                                <linear>
                                    <text text="*性别" textColor="black" textSize="16sp" />
                                    <input id="xb" hint="请输入您的性别" singleLine="true" w="*"/>
                                </linear>
                                <linear>
                                    <text text="*学号" textColor="black" textSize="16sp" />
                                    <input id="xh" hint="请输入您的学号" singleLine="true" w="*"/>
                                </linear>
                                <linear>
                                    <text text="*电话" textColor="black" textSize="16sp" />
                                    <input id="dh" hint="请输入您的电话" singleLine="true" w="*"/>
                                </linear>
                                <button id="ok" text="确定" />
                                <button id="yiban" text="打开易班" />
                                <radiogroup orientation="horizontal" gravity="center">
                                    <text text="位置"  textColor="black"/>
                                    <radio text="最靠前" id="r1" checked="true" />
                                    <radio text="较靠前" id="r2"/>
                                    <radio text="较靠后" id="r3"/>
                                    <radio text="最靠后" id="r4"/>
                                </radiogroup>
                                
                                <button id="timedown" text="设置定时关闭" />
                                <text text="*请注意输入信息。" textColor="red"/>
                                <text text="*使用脚本，必须要开启 -无障碍权限- ，才能运行。" textColor="red"/>
                                <text text="*使用脚本，必须要开启 -悬浮窗权限- ，才能运行。" textColor="red"/>
                            </vertical>
                        </frame>
                    </scroll>
                    <scroll>
                        <frame>
                            <vertical>
                                <text id="texttips" textColor="black" textSize="16sp"/>
                                <text id="about" textSize="16sp" gravity="right"  marginRight="10" textStyle="bold"/>
                            </vertical>
                        </frame>
                    </scroll>
                </viewpager>
            </vertical>
        </drawer>
    );


    ui.autoService.on("check", function(checked) {
        // 用户勾选无障碍服务的选项时，跳转到页面让用户去开启
        if (checked && auto.service == null) {
            app.startActivity({
                action: "android.settings.ACCESSIBILITY_SETTINGS"
            });
            toast("请选择乐抢");
        }
        if (!checked && auto.service != null) {
            auto.service.disableSelf();
        }
    });

    // 当用户回到本界面时，resume事件会被触发
    ui.emitter.on("resume", function() {
        // 此时根据无障碍服务的开启情况，同步开关的状态
        ui.autoService.checked = auto.service != null;
    });


    activity.setSupportActionBar(ui.toolbar);
    //设置滑动页面的标题
    ui.viewpager.setTitles(["主页", "使用说明"]);
    //让滑动页面和标签栏联动
    ui.tabs.setupWithViewPager(ui.viewpager);

    /*************单选框 *************/
    var 延迟 = 0;
    ui.r1.on("check", (checked) => {
        if (checked) {
            toast("您勾选了位置最靠前");
            延迟 = 0;
        }
    });
    ui.r2.on("check", (checked) => {
        if (checked) {
            toast("您勾选了位置较靠前");
            延迟 = 150;
        }
    });
    ui.r3.on("check", (checked) => {
        if (checked) {
            toast("您勾选了位置较靠后");
            延迟 = 400;
        }
    });

    ui.r4.on("check", (checked) => {
        if (checked) {
            toast("您勾选了位置最靠后");
            延迟 = 900;
        }
    });
    /*************单选框 *************/


    /*************使用说明*************/
    ui.texttips.text("使用说明：\n" + "\t\t本软件运行时需要打开 -悬浮窗- 和 -无障碍- ，运行时会自动跳到相应的页面，找到 -乐抢- 并授权即可。\n" +
        "\t\t打开无障碍之后，若没有自动打开易班APP，则手动回到脚本，点击-打开易班-，之后自己打开抢讲座的页面，脚本会自动刷新，直到点击立刻报名。\n" +
        "接下来会脚本会帮你自动操作:\n" +
        "\t\t①刷新到 -立刻报名- 按钮出现并点击.\n" + "\t\t②自动输入信息.\n" + "\t\t③报名成功！。\n" + "\n●位置选择采用延迟设置\n1·最靠前延迟0mm\n2·较靠前延迟150mm\n3·较靠后延迟400mm\n4·最靠后延迟900mm" +
        "\n注：1s=1000mm,延迟高可能抢不到讲座哦" +
        "\n\n\n\n\n");
    /*************使用说明*************/
    ui.about.text("by 小乐er\n" + "有疑问请联系作者QQ:206676727\n" + "\n更新日期：2019.05.16");

    ui.about.on("click", () => {
        qq = "206676727"
        app.startActivity({
            action: "android.intent.action.VIEW",
            data: "mqqapi://card/show_pslcard?&uin=" + qq
        });
    });

    var 点击确定 = false;
    ui.ok.click(function() {
        threads.start(function() {
            var xh = ui.xh.getText();
            var bj = ui.bj.getText();
            var xb = ui.xb.getText();
            var dh = ui.dh.getText();
            var xy = ui.xy.getText();
            var text1 = ui.xy.text();
            var text2 = ui.bj.text();
            var text3 = ui.xb.text();
            var text4 = ui.xh.text();
            var text5 = ui.dh.text();

            if (text1.length == 0) {
                alert("提示:", "请输入您的学院！！");
                return;
            }
            if (text2.length == 0) {
                alert("提示:", "请输入您的班级！！");
                return;
            }
            if (text3.length == 0) {
                alert("提示:", "请输入您的性别！！");
                return;
            }
            if (text4.length == 0) {
                alert("提示:", "请输入您的学号！！");
                return;
            }
            if (text5.length == 0) {
                alert("提示:", "请输入您的电话！！");
                return;
            }

            点击确定 = true;
            toastLog("已获取输入信息:" + "\n学院:" + xy + "\n班级:" + bj + "\n性别:" + xb + "\n学号:" + xh + "\n电话:" + dh);
        });
    });


    //yiban按钮  打开易班App
    ui.yiban.click(function() {
        
        if (点击确定 == false) {
            alert("请先点击确定")
            return;
        }
        threads.start(function() {
            /*↓↓↓↓↓↓打开易班↓↓↓↓↓↓*/
            auto.waitFor();
            toast("正在打开....");
            launchApp("易班");
            sleep(3000);


//通过签名墙是否存在 判断是否在讲座页面
toast("请手动打开需要抢的讲座页面")
if(className("android.view.View").desc("签名墙").exists()){
    toast("到达讲座页面");
    sleep(1500);
    toast("开始执行脚本");
}
if(className("android.view.View").text("签名墙").exists()){
    toast("到达讲座页面");
    sleep(1500);
    toast("开始执行脚本");
}


for(var a=0;;a++){
    if(className("android.view.View").text("讲座报名").exists()){
            className("android.view.View").text("讲座报名").click();
        
        if(className("android.view.View").descContains("未开始").exists()){
            toast("未开始" + "\n刷新了一下");
            className("android.view.View").desc("讲座介绍").click();
            continue;
        }
        if(className("android.view.View").textContains("未开始").exists()){
            toast("未开始" + "\n刷新了一下");
            className("android.view.View").text("讲座介绍").click();
            continue;
        }    
    
    
        if(className("android.view.View").descContains("来晚咯").exists()){
            alert("来晚咯");
            floaty.closeAll();
            engines.stopAll();
            toast("结束");
            exit();
        }
        if(className("android.view.View").textContains("来晚咯").exists()){
            alert("来晚咯");
            floaty.closeAll();
            engines.stopAll();
            toast("结束");
            exit();
        }
    
        if(className("android.view.View").desc("立刻报名").exists()){className("android.view.View").desc("立刻报名").click();break;}
        if(className("android.view.View").text("立刻报名").exists()){className("android.view.View").text("立刻报名").click();break;}
        }//end if 2
    
    if(className("android.view.View").desc("讲座报名").exists()){
        className("android.view.View").desc("讲座报名").click();
    
        if(className("android.view.View").descContains("未开始").exists()){
            toast("未开始" + "\n刷新了一下");
            className("android.view.View").desc("讲座介绍").click();
            continue;
        }
        if(className("android.view.View").textContains("未开始").exists()){
            toast("未开始" + "\n刷新了一下");
            className("android.view.View").text("讲座介绍").click();
            continue;
        }    
    
        if(className("android.view.View").descContains("来晚咯").exists()){
            alert("来晚咯");
            floaty.closeAll();
            engines.stopAll();
            toast("结束");
            exit();
        }
        if(className("android.view.View").textContains("来晚咯").exists()){
            alert("来晚咯");
            floaty.closeAll();
            engines.stopAll();
            toast("结束");
            exit();
        }
    
        if(className("android.view.View").desc("立刻报名").exists()){className("android.view.View").desc("立刻报名").click();break;}
        if(className("android.view.View").text("立刻报名").exists()){className("android.view.View").text("立刻报名").click();break;}
    }//end if 1
    
    }
    
            toast("立刻报名");
            className("android.widget.EditText").untilFind(); /*找到输入框*/
            var xh = ui.xh.getText();
            var bj = ui.bj.getText();
            var xb = ui.xb.getText();
            var dh = ui.dh.getText();
            var xy = ui.xy.getText();
            setText(0, xy);
            setText(1, bj);
            setText(2, xb);
            setText(3, xh);
            setText(4, dh);
            sleep(延迟);
            if(className("android.view.View").desc("确认报名").exists()){
                className("android.view.View").desc("确认报名").click();
            }            
            if(className("android.view.View").text("确认报名").exists()){
                className("android.view.View").text("确认报名").click();
            }

            toastLog("报名成功！");
            sleep(2300);
            toast("欢迎下次使用！")
            floaty.closeAll();
            engines.stopAll();
            toast("结束");
            exit(); /*结束运行*/

        });

    });



        
       

        //点击 timedown按钮，设置倒计时时长
        ui.timedown.click(function() {
            var str1=10;
            dialogs.input("请输入关闭时间 （分钟）", "10", function(str2) {
                toast(str2 + "分钟后关闭");
                str1=str2;
            });

                    /*启动新线程，给悬浮窗*/
        threads.start(function() {
            var window = floaty.window(
                <frame w="68" marginLeft="200" marginTop="-5">
                                    <vertical >
                                        <button id="action" alpha="0.8" textSize="6sp" style="Widget.AppCompat.Button.Colored" w="*"/>
                                        
                                    </vertical>
                                </frame>
            );
            setInterval(() => {}, 500);

            var x = 0,
                y = 0;
            var windowX, windowY;
            window.action.setOnTouchListener(function(view, event) {
                switch (event.getAction()) {
                    case event.ACTION_DOWN:
                        x = event.getRawX();
                        y = event.getRawY();
                        windowX = window.getX();
                        windowY = window.getY();
                        downTime = new Date().getTime();
                        return true;
                    case event.ACTION_MOVE:
                        //移动手指时调整悬浮窗位置
                        window.setPosition(windowX + (event.getRawX() - x),
                            windowY + (event.getRawY() - y));
                        return true;
                    case event.ACTION_UP:
                        //手指弹起时如果偏移很小则判断为点击
                        if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
                            onClick();
                        }
                        return true;
                }
                sleep(10);
                return true;
            });



            //点击 按钮则结束
            function onClick() {
                floaty.closeAll();
                engines.stopAll();
                toast("结束");
                exit();
            }

            function 显示状态信息(str, sec) {
                ui.run(() => {
                    window.action.setText(str);
                });
                timerId = setTimeout(function() {
                    ui.run(() => {
                        window.action.setText("");
                    });
                }, sec * 1000);
            }

            var s = 0;
            var f = 0;
            threads.start(function() {
                //死循环， 动态显示，给用户提供运行状况
                for (s;; s++) {
                    var 滚动显示 = s < 2 * 5 || s > 4 * 5 && s < 6 * 5 || s > 8 * 5 && s < 10 * 5

                    if (滚动显示) {
                        显示状态信息("↘重点↙\n使用前，先把易班关闭，再从这个软件里打开易班。", 1);
                    } else {
                        显示状态信息("点我结束\n已运行\n" + f + "分" + s + "秒\n" + "↑" + str1 + "分后退出↑", 1);
                    }
                    if (s == 60) { //一分钟等于60秒
                        f++;
                        s = 0; //60秒之后，把秒数重置为零
                    }
                    if (f == str1) { //如果f=（分钟）=str（设置的时长），则关闭脚本
                        floaty.closeAll();
                        engines.stopAll();
                        toast("结束");
                        exit();
                    }

                    sleep(1000);
                }
            });


        });
    
        });
 
}